import sys
sys.path.append(r"D:\ProgramData\anaconda3\envs\seed-vc\seed-vc")
import inference
import argparse
from modules.commons import str2bool
import os
import shutil





if __name__ == "__main__":
    """
    source 要转换为参考声音的语音文件路径
    target 作为声音参考的语音文件路径
    output 输出目录的路径
    diffusion-steps 使用的扩散步数，默认为 25，质量最佳使用 30-50，最快推理使用 4-10
    length-adjust 长度调整因子，默认值为 1.0，设置 <1.0 加速语音，>1.0 减慢语音
    inference-cfg-rate classifier free guidance rate，默认为 0.7
    f0-condition 是否对输出音高进行调节，默认为 False，设置为 True 用于歌声转换
    auto-f0-adjust 是否自动调整源音高到目标音高，默认为 False，通常不用于歌声转换
    semi-tone-shift 歌声转换中的音高移位（半音），默认值为 0
    checkpoint 如果已训练或微调自己的模型，请指定模型检查点路径，若留空将自动下载 Hugging Face 的默认模型(seed-uvit-whisper-small-wavenet if f0-condition is False else seed-uvit-whisper-base)
    config 如果已训练或微调自己的模型，请指定模型配置文件路径，若留空将自动下载 Hugging Face 的默认配置
    """
    wav_source = r"E:\txt\男"
    convert_vav= r"E:\txt\语气\男"
    file_list_actor = os.listdir(wav_source)
    file_list = os.listdir(convert_vav)
    for file_name_actor in file_list_actor:
        print(">>>>>>>>>>>  "+file_name_actor+"  <<<<<<<<<<<<<")
        target = os.path.join(wav_source,file_name_actor)
        dirname = file_name_actor.split(".")[0]
        output = r"E:\txt\音频资源\%s"%(dirname)
        for file_name in file_list:
            source = os.path.join(convert_vav,file_name)
            parser = argparse.ArgumentParser()
            parser.add_argument("--source", type=str, default=source)
            parser.add_argument("--target", type=str, default=target)
            parser.add_argument("--output", type=str, default=output)
            parser.add_argument("--diffusion-steps", type=int, default=50)
            parser.add_argument("--length-adjust", type=float, default=1.0)
            parser.add_argument("--inference-cfg-rate", type=float, default=0.7)
            parser.add_argument("--f0-condition", type=str2bool, default=False)
            parser.add_argument("--auto-f0-adjust", type=str2bool, default=True)
            parser.add_argument("--semi-tone-shift", type=int, default=0)
            parser.add_argument("--checkpoint", type=str, help="Path to the checkpoint file", default=None)
            parser.add_argument("--config", type=str, help="Path to the config file", default=None)
            parser.add_argument("--fp16", type=str2bool, default=True)
            args = parser.parse_args()
            inference.main(args)
        shutil.copy(target,output+"\\default_"+file_name_actor.lower())
